package grest.model;

import java.sql.*;

/**
 *
 * @author Agustin, Santiago, Rodrigo
 */
public class TableModelABM extends TableModelSL {
    private Entidad entidad;
    private java.util.List<Entidad> model = null;
    
    public TableModelABM(Entidad ent){
        super(ent);
        entidad = ent;
        model = super.getModel();
    }
    /**
     * Metodo que indica si la celda puede ser editada
     * @param rowIndex
     * @param columnIndex
     * @return 
     */
    @Override
    public boolean isCellEditable(int rowIndex,int columnIndex) {
       return entidad.isColumnEditable(columnIndex);
   }

    /**
     * Metodo que establece un valor en una celda especifica
     * @param aValue
     * @param rowIndex
     * @param columnIndex 
     */
    @Override
   public void setValueAt(Object aValue,int rowIndex,int columnIndex) {
       entidad.setColumnValue(model,rowIndex,columnIndex,aValue);
       fireTableCellUpdated(rowIndex, columnIndex);
   }
   
      
    public void Refresh(Entidad ent)
    {
       this.model.clear();
       ResultSet rs = DataIO.getResultSet(ent.getSelectQuery());
       if ( rs != null){
           try{
               while (rs.next()){
                    ent.loadTuplas(model,rs);  //carga la lista con los objetos del r
               }   
           } catch(SQLException sql){
               DataIO.doException(sql,"Error loading objects from ["+ent.getSelectQuery()+"]");
           }
       }
        
       this.fireTableDataChanged();
    }  
}
